iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
AI & Data

30天胡搞瞎搞學會pyspark系列 第 15

[ Day 15 ] - Pyspark | 資料轉換 - Column : withColumn()

  • 分享至 

  • xImage
  •  

今天是中秋節連假的第二天,真驚訝我今天還坐在這邊繼續寫

今天要做的也是非常基本的處理,開始囉
為什麼會說這也是一個很常用的function呢?
當你在做資料處理的時候,很常會需要針對某個column進行處理並overwrite,或是進而新增一個額外的欄位
這時候就需要用到withColumn
下面會介紹一些常用的withColumn的用法,還有一些我自己的經驗分享,以及一些有趣的combo技,相信可以解決很多資料處理的問題

1. withColumn()

withColumn(ColName,col)
主要有兩個參數可以使用,
ColName: 第一個是新的columnName, 如果新的colulnName,跟原本的一樣,他就會overwrite舊的,進行更新
col:就是你要用什麼replace

情境說明:withColumn ,後面的參數其實可以加很多邏輯去處理,像是之前有提到的regexp_replace,when,split,甚至是你要做DataType的轉換,或是UDF的使用等等的function都可以放在後面做使用
所以你可能可以在同一行裡面做一些很複雜的操作~
e.g. :

  1. to_timestamp(),df.withColumn('Created_Date',to_timestamp(col("Created_Date")))
  2. UDF : df.withColumn(i, make_someColNull_udf(lit(i),col('Levels_handle'),col(i)))
rdd = sc.parallelize(
    [
    ("drink", 2, "Carmen",23,'Female'),
     ("movie", 2, "Juliette",16,'Female'),
     ("writing", 2, "Don José",25,'Male'), 
     ("sleep", 2, "Escamillo",30,'Male'),
     ("play", 2, "Roméo",18,'Male')
    ]
)
df = rdd.toDF(["Thing", "Hour", "Name","Age",'Gender'])
df.show()
df.withColumn('Age',col('Age')+10).show()
'''
+---------+---+------------+Original Data+---------+---+------------+
df.show()
+-------+----+---------+---+------+
|  Thing|Hour|     Name|Age|Gender|
+-------+----+---------+---+------+
|  drink|   2|   Carmen| 23|Female|
|  movie|   2| Juliette| 16|Female|
|writing|   2| Don José| 25|  Male|
|  sleep|   2|Escamillo| 30|  Male|
|   play|   2|    Roméo| 18|  Male|
+-------+----+---------+---+------+
+---------+---+------------+Original Data+---------+---+------------+

+---------+---+------------+OUTPUT+---------+---+------------+
df.withColumn('Age',col('Age')+10).show()
+-------+----+---------+---+------+
|  Thing|Hour|     Name|Age|Gender|
+-------+----+---------+---+------+
|  drink|   2|   Carmen| 33|Female|
|  movie|   2| Juliette| 26|Female|
|writing|   2| Don José| 35|  Male|
|  sleep|   2|Escamillo| 40|  Male|
|   play|   2|    Roméo| 28|  Male|
+-------+----+---------+---+------+
+---------+---+------------+OUTPUT+---------+---+------------+
'''

2. withColumns() - 待更新


上一篇
[ Day 14 ] - Pyspark | 清理 - 特殊資料型態篇 - MapType :
下一篇
[ Day 16 ] - Pyspark | 資料轉換 - Column : withColumnRenamed()
系列文
30天胡搞瞎搞學會pyspark30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言